
package redeS.mensagem;

/**
 * Mensagem Pong.
 * A mensagem Gnutella Pong é a resposta à mensagem Ping.
 * @author thiago-pc
 */
public class Pong extends GnutellaMessage {

	private int indexOfNode;
	private int numberOfFiles;
	// totalDataSize não é relevante na simulação já que se pode usar numberOfFiles como um
	// medidor de dados compartilhados
	
	/**
	 * Além dos dados do cabeçalho (veja abaixo no construtor da superclasse), contem dois
	 * parâmetros de dados do nó que recebeu o Ping.
	 * @param indexOfNode Índice do nó na rede. Representa o IP e a porta de conexão.
	 * @param numberOfFiles É o número de arquivos que esse nó tem.
	 * @see GnutellaMessage#GnutellaMessage(long, int)
	 */
	public Pong(long descriptorID, int TTL, int indexOfNode, int numberOfFiles) {
		super(descriptorID, TTL);
		this.indexOfNode = indexOfNode;
		this.numberOfFiles = numberOfFiles;
	}

	/**
	 * Índice do nó na rede. Representa o IP e a porta de conexão.
	 * @return int indexOfNode
	 */
	public int getIndexOfNode() {
		return indexOfNode;
	}

	/**
	 * É o número de arquivos que esse nó tem.
	 * @return int numberOfFiles
	 */
	public int getNumberOfFiles() {
		return numberOfFiles;
	}
	
	@Override
	public boolean equals(Object obj) {
		if( super.equals(obj) ){
			if(obj instanceof Pong){
				return indexOfNode == ((Pong)obj).indexOfNode;
			}
		}
		return false;
	}

}